package annotation

import "reflect"

// configurationAnno 标识结构体为一个gspring的配置bean
// 提供注解的作用，不让外部访问
type configurationAnno interface {
	markConfigurationAnnotation()
}

var _ configurationAnno = (*Configuration)(nil)

// Configuration 开发者可以将它作为内嵌属性字段，标识为gspring的配置bean，同时也是gspring的普通bean
type Configuration struct {
	Component
}

// 约束了指针实现
func (*Configuration) markConfigurationAnnotation() {}

// GetRtConfigurationAnno 返回接口 [configurationAnno] 的反射类型
func (*Configuration) GetRtConfigurationAnno() reflect.Type {
	return reflect.TypeOf((*configurationAnno)(nil)).Elem()
}
